package com.automannn.atm_back.modules.codeGenerator.core.service;



import com.automannn.atm_back.modules.codeGenerator.core.pojo.GlobalConfig;
import com.automannn.atm_back.modules.codeGenerator.core.pojo.TableInfo;
import com.automannn.atm_back.modules.codeGenerator.core.pojo.Template;

import java.util.Collection;

/**
 * @author chenkh
 * @time 2020/7/6 13:55
 */
public interface CodeService {

    /**
     *  生成代码，并自动保存到对应位置，使用统一配置
     * @param tableInfos
     * @param templates
     * @param globalConfigs
     */
   default void generateByUnifiedConfig(Collection<TableInfo> tableInfos,Collection<Template> templates,Collection<GlobalConfig> globalConfigs){
       if(tableInfos==null) throw new RuntimeException("表格信息为空！");
       if(templates==null) throw new RuntimeException("模板为空！");
       for (TableInfo tableInfo : tableInfos) {
           templates.stream().forEach(template -> {
               generate(template,tableInfo,globalConfigs);
           });
       }
   };

    /**
     * 生成代码
     *
     * @param template  模板
     * @param tableInfo 表信息对象
     * @param globalConfigs 全局配置，可为空
     * @return 生成好的代码
     */
    String  generate(Template template, TableInfo tableInfo,Collection<GlobalConfig> globalConfigs);
}
